﻿using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;
using System.Collections;
using DAL.Entities;
using BAL;

namespace GrouponDesktop.CargaCredito
{
    public partial class TarjetaFrm : Form
    {
        #region Atributos
        private int _nroTarjeta;
        private int _codigo;
        private string _tipo;
        private ClienteEntity _titular;
        private bool _error;
        private bool _debito;
        #endregion

        #region Propiedades
        public int NroTarjeta
        {
            get { return _nroTarjeta; }
            set { _nroTarjeta = value; }
        }

        public int Codigo
        {
            get { return _codigo; }
            set { _codigo = value; }
        }

        public string Tipo
        {
            get { return _tipo; }
            set { _tipo = value; }
        }

        public bool Error
        {
            get { return _error; }
        }
        #endregion

        public TarjetaFrm(ClienteEntity cliente, bool debito)
        {
            InitializeComponent();
            this.CancelButton = this.btnCancelar;
            this._error = false;

            this._titular = cliente;
            this._debito = debito;

            if (this._debito)
            {
                this.txtCodigo.Enabled = false;
                this.CargarTipoTarjetaCredito();
            }
            else
            {
                this.txtCodigo.Enabled = true;
                this.CargarTipoTarjetaDebito();
            }

            this.CargarDatos();
        }

        private void CargarDatos()
        {
            this.CargarTitular();
            this.CargarTarjeta();
        }

        private void CargarTitular()
        {
            if (this._titular != null)
            {
                this.txtNombre.Enabled = false;
                this.txtApellido.Enabled = false;
                this.txtDNI.Enabled = false;

                this.txtNombre.Text = this._titular.VarNombre;
                this.txtApellido.Text = this._titular.VarApellido;
                this.txtDNI.Text = this._titular.BigDNI.ToString();
            }
        }

        private void CargarTipoTarjetaCredito()
        {
            ArrayList listTipos = new ArrayList();

            listTipos.Add("Visa");
            listTipos.Add("MasterCard");
            listTipos.Add("American Express");
            listTipos.Add("Naranja");

            this.cmboTipo.DataSource = listTipos;
        }

        private void CargarTipoTarjetaDebito()
        {
            ArrayList listTipos = new ArrayList();

            listTipos.Add("Visa");
            listTipos.Add("MasterCard");

            this.cmboTipo.DataSource = listTipos;
        }

        private void CargarTarjeta()
        {
            ClienteBAL bal = new ClienteBAL();
            TarjetaEntity tarjeta = bal.GetTarjetaByClienteId(this._titular.IntIdCliente);

            if (tarjeta.Numero > 0)
            {
                this.txtNro.Enabled = false;
                this.txtCodigo.Enabled = false;
                this.cmboTipo.Enabled = false;

                this.txtNro.Text = tarjeta.Numero.ToString();
                this.cmboTipo.SelectedItem = tarjeta.Tipo;

                if (!this._debito)
                    this.txtCodigo.Text = tarjeta.CodigoVerificador.ToString();
            }
        }

        private void btnCambiarDatos_Click(object sender, EventArgs e)
        {
            this.txtNro.Enabled = true;
            this.txtCodigo.Enabled = true;
            this.cmboTipo.Enabled = true;

            this.txtNro.Text = string.Empty;
            this.txtCodigo.Text = string.Empty;

            this.cmboTipo.SelectedIndex = 0;
        }

        private void btnAceptar_Click(object sender, EventArgs e)
        {
            if (this.txtNro.Text != string.Empty)
            {
                this.NroTarjeta = Convert.ToInt32(this.txtNro.Text);
                this.Tipo = this.cmboTipo.SelectedValue.ToString();

                if (!this._debito)
                {
                    this.Codigo = Convert.ToInt32(this.txtCodigo.Text);
                }
                else 
                {
                    this.Codigo = 0;
                }

                this.Close();
            }
            else
            {
                MessageBox.Show("Error: Alguno de los campos esta incompleto", "Tarjeta", MessageBoxButtons.OK, MessageBoxIcon.Error);
            }
        }

        private void btnCancelar_Click(object sender, EventArgs e)
        {
            this._error = true;
        }
    }
}
